Merge conflicts solutioned
[RRRRHHHH_Code] / ruralHouses client / src / gui / HouseFeaturesGUI.java
diff --git a/ruralHouses client/src/gui/HouseFeaturesGUI.java b/ruralHouses client/src/gui/HouseFeaturesGUI.java
new file mode 100644 (file)
index 0000000..254f9c9
--- /dev/null
@@ -0,0 +1,320 @@
+package gui;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.rmi.Naming;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.Vector;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.SwingConstants;
+import javax.swing.border.EmptyBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import common.BookingInterface;
+
+import configuration.___IntNames;
+import domain.Booking;
+import domain.Client;
+import domain.Offer;
+import domain.RuralHouse;
+
+public class HouseFeaturesGUI extends JFrame {
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = 1L;
+       private JPanel contentPane;
+       private JLabel lblDistrict;
+       private JTextField District_f;
+       private JLabel lblDescription;
+       private JTextField description_f;
+       private JLabel lblKitchen;
+       private JTextField kitchens_f;
+       private JLabel lblRooms;
+       private JTextField rooms_f;
+       private JLabel lblLivings;
+       private JTextField lRooms_f;
+       private JLabel lblParkings;
+       private JTextField parkings_f;
+       private JLabel lblBaths;
+       private JTextField baths_f;
+       private JTable table;
+       private DefaultTableModel tableModel;
+       private RuralHouse rh;
+       private JTextField telIn;
+       private int row;
+       private JLabel labelPhone;
+       private JLabel lblName;
+       private JTextField nameField;
+       private JLabel lblEmail;
+       private JTextField mailField;
+
+       /**
+        * Create the frame.
+        */
+
+       public HouseFeaturesGUI(RuralHouse RH, final Date FirstDay,
+                       final Date LastDay) {
+               this.rh = RH;
+               this.getContentPane().setLayout(null);
+               setBounds(100, 100, 500, 700);
+               contentPane = new JPanel();
+               contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
+               setContentPane(contentPane);
+
+               lblDistrict = new JLabel("District:");
+               lblDistrict.setBounds(23, 67, 70, 14);
+               lblDistrict.setHorizontalAlignment(SwingConstants.RIGHT);
+
+               District_f = new JTextField();
+               District_f.setEditable(false);
+               District_f.setBounds(103, 64, 86, 20);
+               District_f.setColumns(10);
+
+               lblDescription = new JLabel("Description:");
+               lblDescription.setBounds(215, 67, 90, 14);
+               lblDescription.setHorizontalAlignment(SwingConstants.RIGHT);
+
+               description_f = new JTextField();
+               description_f.setEditable(false);
+               description_f.setBounds(238, 99, 178, 129);
+               description_f.setColumns(10);
+
+               lblKitchen = new JLabel("Kitchens:");
+               lblKitchen.setBounds(23, 211, 70, 14);
+               lblKitchen.setHorizontalAlignment(SwingConstants.RIGHT);
+
+               kitchens_f = new JTextField();
+               kitchens_f.setEditable(false);
+               kitchens_f.setBounds(103, 202, 86, 20);
+               kitchens_f.setColumns(10);
+
+               lblRooms = new JLabel("Rooms:");
+               lblRooms.setBounds(23, 102, 70, 14);
+               lblRooms.setHorizontalAlignment(SwingConstants.RIGHT);
+
+               rooms_f = new JTextField();
+               rooms_f.setEditable(false);
+               rooms_f.setBounds(103, 99, 86, 20);
+               rooms_f.setColumns(10);
+
+               lblLivings = new JLabel("Living rooms:");
+               lblLivings.setBounds(30, 236, 63, 14);
+               lblLivings.setHorizontalAlignment(SwingConstants.RIGHT);
+
+               lRooms_f = new JTextField();
+               lRooms_f.setEditable(false);
+               lRooms_f.setBounds(103, 233, 86, 20);
+               lRooms_f.setColumns(10);
+
+               lblParkings = new JLabel("Parkings:");
+               lblParkings.setBounds(23, 174, 70, 14);
+               lblParkings.setHorizontalAlignment(SwingConstants.RIGHT);
+
+               parkings_f = new JTextField();
+               parkings_f.setEditable(false);
+               parkings_f.setBounds(103, 171, 86, 20);
+               parkings_f.setColumns(10);
+
+               lblBaths = new JLabel("Baths:");
+               lblBaths.setBounds(23, 143, 70, 14);
+               lblBaths.setHorizontalAlignment(SwingConstants.RIGHT);
+
+               baths_f = new JTextField();
+               baths_f.setEditable(false);
+               baths_f.setBounds(103, 140, 86, 20);
+               baths_f.setColumns(10);
+               contentPane.setLayout(null);
+               contentPane.add(lblParkings);
+               contentPane.add(parkings_f);
+               contentPane.add(lblRooms);
+               contentPane.add(rooms_f);
+               contentPane.add(lblBaths);
+               contentPane.add(baths_f);
+               contentPane.add(lblDistrict);
+               contentPane.add(District_f);
+               contentPane.add(lblLivings);
+               contentPane.add(lRooms_f);
+               contentPane.add(lblKitchen);
+               contentPane.add(kitchens_f);
+               contentPane.add(description_f);
+               contentPane.add(lblDescription);
+               parkings_f.setText(Integer.toString(rh.getFeatures().getnParkings()));
+               rooms_f.setText(Integer.toString(rh.getFeatures().getnRooms()));
+               baths_f.setText(Integer.toString(rh.getFeatures().getnBaths()));
+               District_f.setText(rh.getDistrict());
+               kitchens_f.setText(Integer.toString(rh.getFeatures().getnKitchens()));
+               description_f.setText(rh.getDescription());
+               lRooms_f.setText(Integer.toString(rh.getFeatures().getnLivings()));
+               JLabel lblAvailbleOffers = new JLabel("Availble Offers:");
+               lblAvailbleOffers.setBounds(30, 286, 86, 14);
+               contentPane.add(lblAvailbleOffers);
+               JScrollPane scrollPane = new JScrollPane();
+               scrollPane.setBounds(40, 311, 376, 183);
+               contentPane.add(scrollPane);
+
+               table = new JTable() {
+                       private static final long serialVersionUID = 1L;
+
+                       public boolean isCellEditable(int row, int column) {
+                               return false;
+                       };
+               };
+               tableModel = new DefaultTableModel(null, new String[] { "Offer #",
+                               "FirstDay", "LastDay", "Price" });
+               table.setModel(tableModel);
+               scrollPane.setViewportView(table);
+
+               JButton btnBookSelected = new JButton("Book SelectedOffer");
+               btnBookSelected.setBounds(238, 614, 178, 23);
+               contentPane.add(btnBookSelected);
+
+               btnBookSelected.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent arg0) {
+
+                               jButton_ActionPerformed(arg0);
+                       }
+
+               });
+
+               JLabel lblNewLabel = new JLabel(
+                               "Green: Suit your dates. Red: Do not suit your dates");
+               lblNewLabel.setEnabled(false);
+               lblNewLabel.setBounds(170, 282, 261, 23);
+               contentPane.add(lblNewLabel);
+
+               JLabel lblNewLabel_1 = new JLabel("Telephone num:");
+               lblNewLabel_1.setBounds(10, 618, 83, 14);
+               contentPane.add(lblNewLabel_1);
+
+               telIn = new JTextField();
+               telIn.setBounds(103, 615, 129, 20);
+               contentPane.add(telIn);
+               telIn.setColumns(10);
+
+               labelPhone = new JLabel("");
+               labelPhone.setBounds(238, 252, 178, 14);
+               contentPane.add(labelPhone);
+
+               lblName = new JLabel("Name:");
+               lblName.setBounds(10, 516, 46, 14);
+               contentPane.add(lblName);
+
+               nameField = new JTextField();
+               nameField.setBounds(103, 513, 178, 20);
+               contentPane.add(nameField);
+               nameField.setColumns(10);
+
+               lblEmail = new JLabel("E-mail:");
+               lblEmail.setBounds(10, 565, 46, 14);
+               contentPane.add(lblEmail);
+
+               mailField = new JTextField();
+               mailField.setBounds(103, 562, 178, 20);
+               contentPane.add(mailField);
+               mailField.setColumns(10);
+
+               table.addMouseListener(new MouseAdapter() {
+                       @Override
+                       public void mouseClicked(MouseEvent arg0) {
+                               row = table.getSelectedRow();
+                       }
+               });
+               Enumeration<Offer> rhs = rh.getAllOffers().elements();
+               while (rhs.hasMoreElements()) {
+                       Offer of = rhs.nextElement();
+                       if (of.getBookings() == null
+                                       || of.isBooked()) {
+                               Vector<Object> row = new Vector<Object>();
+                               row.add(of.getOfferNumber());
+                               row.add(of.getFirstDay());
+                               row.add(of.getLastDay());
+                               row.add(of.getPrice());
+                               tableModel.addRow(row);
+                       }
+               }
+               table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
+                       /**
+                        * 
+                        */
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public Component getTableCellRendererComponent(JTable table,
+                                       Object value, boolean isSelected, boolean hasFocus,
+                                       int row, int col) {
+
+                               super.getTableCellRendererComponent(table, value, isSelected,
+                                               hasFocus, row, col);
+
+                               Date firstDay = (Date) table.getModel().getValueAt(row, 1);
+                               Date lastDay = (Date) table.getModel().getValueAt(row, 2);
+                               if (FirstDay != null && LastDay != null) {
+                                       if (LastDay.before(lastDay) || FirstDay.after(firstDay)) {
+                                               setBackground(Color.RED);
+                                               setForeground(Color.BLACK);
+                                       } else {
+                                               setBackground(Color.GREEN);
+                                               setForeground(Color.BLACK);
+                                       }
+                               }
+                               return this;
+                       }
+               });
+       }
+
+       private void jButton_ActionPerformed(ActionEvent arg0) {
+
+               BookingInterface bookingM = null;
+               try {
+                       bookingM = (BookingInterface) Naming
+                                       .lookup(___IntNames.BookingManager);
+               } catch (Exception e1) {
+                       System.out.println("Error accessing remote authentication: "
+                                       + e1.toString());
+               }
+               
+               //RegExp to see if telephone number is correct??TODO
+               if (telIn.getText().matches("[976]\\d{2}[.\\- ]?\\d{3}[.\\- ]?\\d{3}")
+                               && mailField
+                               .getText()
+                               .matches(
+                                               "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$")
+               && !nameField.getText().isEmpty()) {
+                       labelPhone.setText("");
+                       Vector<Booking> book = null;
+                       try {
+                               if (table.getRowCount() != 0) {
+                                       Client cl = new Client(nameField.getText(),
+                                                       mailField.getText(), telIn.getText());
+                                       book = bookingM.createBooking(rh, rh.offers.get(row)
+                                                       .getFirstDay(), rh.offers.get(row).getLastDay(),cl);
+                               }
+                       } catch (Exception e) {
+                               e.printStackTrace();
+                       }
+                       if (book != null) {
+                               BookRuralHouseConfirmationWindow confirmWindow = new BookRuralHouseConfirmationWindow(
+                                               book.lastElement());
+                               confirmWindow.setVisible(true);
+                       }
+               } else {
+                       labelPhone.setText("Bad formatted data.");
+
+               }
+       }
+}